package cn.yj.core.business.service.iservice;

import cn.yj.annotation.pagehelper.page.Page;
import cn.yj.cgs.dba.entity.Integral;
import cn.yj.cgs.dba.entity.vo.IntegralWaterProgress;
import cn.yj.cgs.dba.entity.vo.InterWaterRollVo;
import cn.yj.common.Enums;
import cn.yj.config.SchoolCBDConfig;
import cn.yj.entity.R;
import com.baomidou.mybatisplus.extension.service.IService;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

/**
 * <br>
 * 积分表
 *
 * @author 永健
 * @since 2021-04-20 13:40
 */
public interface IIntegralService extends IService<Integral>{

    /**
     * 修改积分
     * @param userCode 给哪个用户增加/减少积分
     * @param integral 积分
     * @param isAdd true:加：false减
     * @param source 积分涞源
     * @param inviteCode 当积分涞源为Register 时候 可能有
     */
    boolean updateIntegral(String userCode, BigDecimal integral, boolean isAdd, Enums.IntegralWater.SOURCE source,String inviteCode);

    Map<String,Object> getIntegralByUserCode(String userCode);

    /**
     * 获取剩余的积分
     * @param userCode userCode
     */
    BigDecimal getSurplusIntegralByUserCode(String userCode);

    SchoolCBDConfig.IntegralConfig getIntegralRules();

    Page<Object> getListByUserCode(Page<Object> page,String userCode,String type);

    /**
     * 签到
     * @param userCode 用户编码
     */
    R signIn(String userCode);
    List<List<String>> getSignDay(String userCode);

    /**
     * 提现进度流程
     * @param orderNo 流水单
     */
    IntegralWaterProgress getProgress(String orderNo);

    BigDecimal getAmountByUserCode(String userCode);

    Page<InterWaterRollVo> getRollRecords(Page<InterWaterRollVo> page);
}
